package br.com.velp.sudecap.mb.usuario;

import br.com.velp.sudecap.comum.BaseController;
import br.com.velp.sudecap.entidade.DireitoSistema;
import br.com.velp.sudecap.entidade.Usuario;
import br.com.velp.sudecap.enumerator.PaginaEnum;
import br.com.velp.sudecap.mb.contexto.ContextoBean;
import br.com.velp.sudecap.service.UsuarioService;
import br.com.velp.sudecap.util.JsfUtil;
import br.com.velp.sudecap.web.util.MensagemUtil;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/**
 * <sumario>
 * <objetivo>"Rastreabilidade"</objetivo>
 * <autor>EDUARDO SANTOS DE OLIVEIRA</autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisito_afetado> RF001.01 - Autenticar Usuário </requisito_afetado>
 * <descricao> Managead Bean responsável por controlar o acesso as 
 *             funcionalidades do Sistema </descricao>
 * </sumario>
 */
@Controller("loginUsuario")
@ApplicationScoped
public class LoginUsuario extends BaseController {
    
    private static final long serialVersionUID = 1L;

    private String login;
    private String senha;
    private Usuario usuarioLogado;
    
    @Autowired
    private UsuarioService usuarioService;

    public LoginUsuario() {
	
	this.login = null;
	this.senha = null;
	
    }

    public String login() {
	
	this.usuarioLogado = this.usuarioService.recuperarUsuarioPorLoginSenha(this.login, this.senha);
	
	if (this.usuarioLogado == null) {
	    MensagemUtil.exibirMensagemErro("global", "Usuário ou Senha Incorretos");
	    return null;
	} else {
	    List<DireitoSistema> privilegios = this.usuarioService.recuperarPrivilegiosUsuario(this.usuarioLogado);
	    JsfUtil.adicionarObjetoSessao("contextoBean", new ContextoBean(this.usuarioLogado, privilegios));
	    return PaginaEnum.PAGINA_PRINCIPAL.getValue();
	}
	
    }
    
    public String logout(){
	
	JsfUtil.removerObjetoSessao("contextoBean");
	return PaginaEnum.PAGINA_LOGIN.getValue();
	
    }

    // <editor-fold desc="GETTERS AND SETTERS" defaultstate="collapsed">            
    public String getLogin() {
	return login;
    }

    public void setLogin(String login) {
	this.login = login;
    }

    public String getSenha() {
	return senha;
    }

    public void setSenha(String senha) {
	this.senha = senha;
    }

    public Usuario getUsuarioLogado() {
	return usuarioLogado;
    }

    public void setUsuarioLogado(Usuario usuarioLogado) {
	this.usuarioLogado = usuarioLogado;
    }

    // </editor-fold>        
    
}
